/**
 * [628] 三个数的最大乘积
 * Tips:
 * # 3 <= nums.length <= 104
 * # -1000 <= nums[i] <= 1000
 * 三数乘积：
 * # +++
 * # -++ 长度为 3
 * # --+
 * # --- 全为负数
 * # 0 除负数外全是0
 * 思路：
 * 0. 先排序，判断乘积能否为正数
 * 1. 组合可以正数时保证绝对值最大
 * 2. 组合只能负数时保证绝对值最小
 * 判断逻辑：（乘积能否为正数）
 * # 正数：+ >= 3, + >= 1 & - >= 2,
 * # 0：else-if nums[indexMin] == 0
 * # 负数：else
 *
 * @format
 * @lc app=leetcode.cn id=628 lang=javascript
 */

// @lc code=start
/**
 * @param {number[]} nums
 * @return {number}
 */
var maximumProduct = function (nums) {
    nums.sort((a, b) => a - b)
    return Math.max(
        nums[nums.length - 1] * nums[nums.length - 2] * nums[nums.length - 3],
        nums[0] * nums[1] * nums[nums.length - 1]
    )
}
// @lc code=end
